package com.zhangshuo.patternDesign.composite;

/**
 * Created by shuo.zhang on 2017-10-27.
 *
 * 文件系统的抽像类
 */
public abstract class AbstractFile {

    /**
     * 上一级的目录
     */
    private AbstractFile parent;
    /**
     * 文件名
     */
    private String name;

    public AbstractFile(String name) {
        this(name,null);
    }

    public AbstractFile(String name,AbstractFile parent){
        this.name = name;
        this.parent = parent;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public AbstractFile getParent() {
        return parent;
    }

    /**
     * 删除文件
     */
    abstract void deleteFile();

    /**
     * 删除指定文件，在这里只能删除直接的文件或文件夹，没有递归
     * @param name
     */
    abstract void deleteFile(String name);


    /**
     * 新增文件
     * @param
     */
    abstract void addFile(String name);


    /**
     * 显示文件
     */
    abstract  void display(String prefix);


    public void display(){
        display("");
    }

    /**
     * 获取指定索引的文件
     * @param index
     * @return
     */
    abstract  AbstractFile getFile(int index);

}
